package com.youlai.boot.util;

import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;

import java.math.BigDecimal;
import java.util.Objects;

public class NumberUtils {
    public static Double getDouble(String str) {
        if (StrUtil.isBlank(str)) {
            return null; // 空字符串或 null 直接返回 null
        }

        String trimmed = str.trim(); // 去除前后空格
        if (StrUtil.isBlank(trimmed)) {
            return null;
        }
        return Double.parseDouble(trimmed);
    }

    public static String extractValueStr(String str) {
        BigDecimal decimal = extractValue(str);
        return Objects.nonNull(decimal) ? decimal.toString() : null;
    }

    public static BigDecimal extractValue(String str) {
        if (StrUtil.isBlank(str)) {
            return null; // 空字符串或 null 直接返回 null
        }

        String trimmed = str.trim(); // 去除前后空格
        if (StrUtil.isBlank(trimmed)) {
            return null;
        }
        if (trimmed.contains(",")){
            trimmed = trimmed.replaceAll(",", "");
        }

        String[] parts = trimmed.split(" ");
        String numStr = parts[0]; // 取第一个部分作为数值

        try {
            return new BigDecimal(numStr);
        } catch (NumberFormatException e) {
            // 数值格式错误，返回 null 或根据业务需要抛出自定义异常
            return null;
        }
    }

    /**
     * 获取触动机构的长度
     *
     * @param str
     * @param num
     * @return
     */
    public static BigDecimal getLengthValue(String str, Integer num) {
        BigDecimal extractValue = extractValue(str);
        if (Objects.isNull(extractValue)) {
            return null;
        }
        if (Objects.isNull(num)) {
            return extractValue;
        }
        return NumberUtil.add(extractValue, num);
    }
}
